home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / libs / MultiReq.lha / MultiReq / C / SimpleDemo.c < prev    next >
C/C++ Source or Header  |  1992-11-12  |  4KB  |  168 lines

  1. /* my includes */
  2.  
  3. #include <exec/types.h>
  4. #include <libraries/multireq.h>
  5. #include <clib/multireq_protos.h>
  6. #include <pragmas/multireq_lib.h>
  7.  
  8. /* some Functions not defined yet */
  9.  
  10. extern struct MultiReqBase *OpenLibrary();
  11. extern UWORD FileRequester();
  12. extern void InitFileReq(), FreeFileReq();
  13.  
  14.  
  15. /* a pointer to the multireq.library base */
  16.  
  17. struct MultiReqBase *MultiReqBase;
  18.  
  19.  
  20. /* memory for the pointer to the FileReq-structure */
  21.  
  22. struct FileReq *fr;
  23.  
  24.  
  25. /* the main program */
  26.  
  27. main(argc,argv)
  28. int argc;
  29. char **argv;
  30. {
  31.   register UWORD erg;
  32.  
  33.  
  34.   /* open the multireq.library */
  35.  
  36.   if(!(MultiReqBase=OpenLibrary("multireq.library",0L)))
  37.   {
  38.     puts("Can't open multireq.library !");
  39.     exit(0);
  40.   }
  41.  
  42.  
  43.   /* Create a FileReq-structure */
  44.  
  45.   InitFileReq(&fr,2L);        /* 2 allways as second argument, cause no other
  46.                    number of filelists suported yet */
  47.  
  48.   if(fr)            /* FileReq-structure ok ? */
  49.   {
  50.     /* Set some sample parameters */
  51.     
  52.     SetParameters();
  53.  
  54.     do
  55.     {
  56.       /* start FileRequester on WorkBench-screen */
  57.  
  58.       erg=FileRequester(fr,NULL);
  59.  
  60.  
  61.       /* Say how the FileRequester was ended */
  62.  
  63.       WriteAction();
  64.  
  65.     }while(erg==RET_OKAY);    /* should I start again ? */
  66.  
  67.  
  68.     /* Delete the FileReq-structure and free the memory */
  69.  
  70.     FreeFileReq(&fr);
  71.  
  72.   }
  73.   else
  74.     puts("Unable to create FileReq-structure !");
  75.  
  76.  
  77.   /* Close the multireq.library */
  78.  
  79.   CloseLibrary(MultiReqBase);
  80.  
  81.  
  82.   if(argc==0)
  83.     Delay(200L);        /* I'm started from WBench, so I wait 2 Seconds */
  84.  
  85.  
  86.   /* everything done, bye ! */
  87. }
  88.  
  89.  
  90. /* This routine is a example how to interpret the ReturnStatus of the */
  91. /* FileRequester (notice the value ReturnStatus is identical to that returned */
  92. /* by the FileRequester-function */
  93.  
  94. WriteAction()
  95. {
  96.   switch(fr->ReturnStatus)
  97.   {
  98.     case RET_ERROR:    /* start successfull ? */
  99.       puts("Unable to open FileRequester !");
  100.       break;
  101.  
  102.     case RET_CANCEL:    /* Cancel-gadget pressed */
  103.       puts("You've clicked on the Cancel-gadget");
  104.       break;
  105.  
  106.     case RET_CLOSE:    /* Close-gadget pressed */
  107.       puts("You've clicked on the Close-gadget");
  108.       break;
  109.  
  110.     case RET_FILE:    /* RETURN pressed */
  111.       puts("You've pressed <RETURN> in the File-gadget");
  112.       break;
  113.  
  114.     case RET_DOUBLE:    /* DoubleClick on File */
  115.       puts("You've done a DoubleClick on a File");
  116.       break;
  117.  
  118.     case RET_OKAY:    /* Okay-gadget pressed */
  119.       puts("You've pressed on the Okay-gadget");
  120.       puts("  => the FileRequester is started again");
  121.       break;
  122.   }
  123.  
  124.   puts("\nThe follwing file was selected:");
  125.   puts(fr->FileNameBuff);
  126.   puts("");        /* write a free line after the filename */
  127. }
  128.  
  129.  
  130. /* the following part contains some parameters for the FileRequester */
  131. /* all this parameters are optional, cause FileRequester also works, when no */
  132. /* parameters are set (InitFileReq has done this for you) */
  133.  
  134. static UBYTE Title[]="The multitasking FileRequester by Andreas Krebs";
  135. static UBYTE Okay[]="go on";
  136.  
  137. static UBYTE Dir1[]="SYS:";
  138. static UBYTE Dir2[]="DEVS:";
  139. static UBYTE File[]="SampleFile";
  140. static UBYTE Show[]="*.*|*-*";        /* Show all files with a . or - in it */
  141. static UBYTE Hide[]="*+*";        /* Hide all files with a + in it */
  142.  
  143. SetParameters()
  144. {
  145.   fr->TitleString=Title;    /* Set title of FileRequester */
  146.   fr->OkayString=Okay;        /* Set text of Okay-gadget */
  147.  
  148.   fr->LeftEdge=20;        /* Set LeftEdge of FileRequester */
  149.   fr->TopEdge=10;        /* Set TopEdge of FileRequester */
  150.  
  151.   fr->ActiveList=1;        /* Show filelist 2 first */
  152.   fr->ShowInfo=HIDE_INFO;    /* Don't show .info-files */
  153.  
  154.   strcpy(fr->FileBuff,File);    /* File to be displayed in File-Gadget */
  155.   strcpy(fr->ShowBuff,Show);    /* Files to be shown */
  156.   strcpy(fr->HideBuff,Hide);    /* Files to be hidden */
  157.  
  158.   strcpy(fr->FileList[0].DrawerBuff,Dir1);
  159.                 /* Set name of first directory */
  160.   fr->FileList[0].AutoRead=NO_AUTOREAD;
  161.                 /* Do not automatically readin first directory */
  162.  
  163.   strcpy(fr->FileList[1].DrawerBuff,Dir2);
  164.                 /* Set name of second directory */
  165.   fr->FileList[1].AutoRead=DO_AUTOREAD;
  166.                 /* Do automatically readin second directory */
  167. }
  168.